var framework = {
	/* Json 工具类 */
	isJson : function(str) {
		var obj = null;
		try {
			obj = framework.paserJson(str);
		} catch (e) {
			return false;
		}
		var result = typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length;
		return result;
	},
	paserJson : function(str) {
		return eval("(" + str + ")");
	},
	/* 弹出框 */
	alert : function(title, msg, icon, callback) {
		$.messager.alert(title, msg, icon, callback);
	},
	/* 弹出框 */
	confirm : function(title, msg, callback) {
		$.messager.confirm(title, msg, callback);
	},
	progress : function(title, msg) {
		var win = $.messager.progress({
			title : title || 'Please waiting',
			msg : msg || 'Loading data...'
		});
	},
	closeProgress : function() {
		$.messager.progress('close');
	},
	/* 重新登录页面 */
	toLogin : function() {
		// window.top.location= urls['msUrl']+"/login.shtml";
	},
	checkLogin : function(data) {// 检查是否登录超时
		if (data.logoutFlag) {
			framework.closeProgress();
			framework.alert('提示', "登录超时,点击确定重新登录.", 'error', framework.toLogin);
			return false;
		}
		return true;
	},
	ajaxSubmit : function(form, option) {
		form.ajaxSubmit(option);
	},
	ajaxJson : function(url, option, callback) {
		$.ajax(url, {
			type : 'post',
			dataType : 'json',
			data : option,
			success : function(data) {
				// 坚持登录
				if (!framework.checkLogin(data)) {
					return false;
				}
				if ($.isFunction(callback)) {
					callback(data);
				}
			},
			error : function(response, textStatus, errorThrown) {
				try {
					framework.closeProgress();
					var data = $.parseJSON(response.responseText);
					// 检查登录
					if (!framework.checkLogin(data)) {
						return false;
					} else {
						framework.alert('提示', data.msg || "请求出现异常,请联系管理员", 'error');
					}
				} catch (e) {
					framework.alert('提示', "请求出现异常,请联系管理员1", 'error');
				}
			},
			complete : function() {

			}
		});
	},
	submitForm : function(form, callback, dataType) {
		var option = {
			type : 'post',
			dataType : dataType || 'json',
			success : function(data) {
				if ($.isFunction(callback)) {
					callback(data);
				}
			},
			error : function(response, textStatus, errorThrown) {
				try {
					framework.closeProgress();
					var data = $.parseJSON(response.responseText);
					// 检查登录
					if (!framework.checkLogin(data)) {
						return false;
					} else {
						framework.alert('提示', data.msg || "请求出现异常,请联系管理员", 'error');
					}
				} catch (e) {
					alert(e);
					framework.alert('提示', "请求出现异常,请联系管理员1", 'error');
				}
			},
			complete : function() {

			}
		}
		framework.ajaxSubmit(form, option);
	},
	saveForm : function(form, callback) {
		if (form.form('validate')) {
			framework.progress('Please waiting', 'Save ing...');
			// ajax提交form
			framework.submitForm(form, function(data) {
				framework.closeProgress();
				if (data.success) {
					if (callback) {
						callback(data);
					} else {
						framework.alert('提示', '保存成功.', 'info');
					}
				} else {
					framework.alert('提示', data.msg, 'error');
				}
			});
		}
	},
	/**
	 * 
	 * @param {}
	 *            url
	 * @param {}
	 *            option {id:''}
	 */
	getById : function(url, option, callback) {
		framework.progress();
		framework.ajaxJson(url, option, function(data) {
			framework.closeProgress();
			if (data.success) {
				if (callback) {
					callback(data);
				}
			} else {
				framework.alert('提示', data.msg, 'error');
				if (callback) {
					callback(data);
				}
			}
		});
	},
	execTask : function(url, option, callback) {
		framework.progress();
		framework.ajaxJson(url, option, function(data) {
			framework.closeProgress();
			if (callback) {
				callback(data);
			}
		});
	},
	deleteForm : function(url, option, callback) {
		framework.progress();
		framework.ajaxJson(url, option, function(data) {
			framework.closeProgress();
			if (data.success) {
				if (callback) {
					callback(data);
				}
			} else {
				framework.alert('提示', data.errorMsg, 'error');
			}
		});
	},
	getCheckedRows : function(dg) {
		return dg.datagrid('getChecked');
	},
	getTreeSelectRows : function(dg) {
		return dg.treegrid("getSelections");
	},
	checkSelect : function(rows) {// 检查grid是否有勾选的行, 有返回 true,没有返回true
		var records = rows;
		if (records && records.length > 0) {
			return true;
		}
		framework.alert('警告', '未选中记录.', 'warning');
		return false;

	},
	checkSelectItem : function(rows) {// 检查grid是否有勾选的行, 有返回 true,没有返回true
		var records = rows;
		if (records && records.length > 0) {
			return true;
		}
		return false;

	},
	checkSelectOne : function(rows) {// 检查grid是否只勾选了一行,是返回 true,否返回true
		var records = rows;
		if (!framework.checkSelect(records)) {
			return false;
		}
		if (records.length == 1) {
			return true;
		}
		framework.alert('警告', '只能选择一行记录.', 'warning');
		return false;
	},
	isSelectOne : function(rows) {// 检查grid是否只勾选了一行,是返回 true,否返回true
		var records = rows;
		if (!framework.checkSelectItem(records)) {
			return false;
		}
		if (records.length == 1) {
			return true;
		}
		return false;
	},
	/**
	 * ajax返回提示
	 * 
	 * @param data
	 *            返回的数据
	 * @param dg
	 *            datagrid
	 * @param d
	 *            弹窗
	 * @returns {Boolean} ajax是否成功
	 */
	successTip : function(data, dg, d) {
		if (data.success == true) {
			if (dg != null)
				dg.datagrid('reload');
			if (d != null)
				d.panel('close');
			$.messager.show({
				title : "提示",
				msg : "操作成功！",
				position : "bottomRight"
			});
			return true;
		} else {
			framework.alert('提示',data.errorMsg,'error');
			return false;
		}
	}
}

/* 自定义密码验证 */
$.extend($.fn.validatebox.defaults.rules, {
	equals : {
		validator : function(value, param) {
			return value == $(param[0]).val();
		},
		message : 'Field do not match.'
	}
});

/* 表单转成json数据 */
$.fn.serializeObject = function() {
	var o = {};
	var a = this.serializeArray();
	$.each(a, function() {
		if (o[this.name]) {
			if (!o[this.name].push) {
				o[this.name] = [ o[this.name] ];
			}
			o[this.name].push(this.value || '');
		} else {
			o[this.name] = this.value || '';
		}
	});
	return o;
}

/* easyui datagrid 添加和删除按钮方法 */
$.extend($.fn.datagrid.methods, {
	addToolbarItem : function(jq, items) {
		return jq.each(function() {
			var toolbar = $(this).parent().prev("div.datagrid-toolbar");
			for (var i = 0; i < items.length; i++) {
				var item = items[i];
				if (item === "-") {
					toolbar.append('<div class="datagrid-btn-separator"></div>');
				} else {
					var btn = $("<a href=\"javascript:void(0)\"></a>");
					btn[0].onclick = eval(item.handler || function() {
					});
					btn.css("float", "left").appendTo(toolbar).linkbutton($.extend({}, item, {
						plain : true
					}));
				}
			}
			toolbar = null;
		});
	},
	removeToolbarItem : function(jq, param) {
		return jq.each(function() {
			var btns = $(this).parent().prev("div.datagrid-toolbar").children("a");
			var cbtn = null;
			if (typeof param == "number") {
				cbtn = btns.eq(param);
			} else if (typeof param == "string") {
				var text = null;
				btns.each(function() {
					text = $(this).data().linkbutton.options.text;
					if (text == param) {
						cbtn = $(this);
						text = null;
						return;
					}
				});
			}
			if (cbtn) {
				var prev = cbtn.prev()[0];
				var next = cbtn.next()[0];
				if (prev && next && prev.nodeName == "DIV" && prev.nodeName == next.nodeName) {
					$(prev).remove();
				} else if (next && next.nodeName == "DIV") {
					$(next).remove();
				} else if (prev && prev.nodeName == "DIV") {
					$(prev).remove();
				}
				cbtn.remove();
				cbtn = null;
			}
		});
	}
});

// 时间日期格式化
Date.prototype.Format = function(fmt) { // author:
	var o = {
		"M+" : this.getMonth() + 1, // 月份
		"d+" : this.getDate(), // 日
		"h+" : this.getHours(), // 小时
		"m+" : this.getMinutes(), // 分
		"s+" : this.getSeconds(), // 秒
		"q+" : Math.floor((this.getMonth() + 3) / 3), // 季度
		"S" : this.getMilliseconds()
	// 毫秒
	};
	if (/(y+)/.test(fmt))
		fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	for ( var k in o)
		if (new RegExp("(" + k + ")").test(fmt))
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
	return fmt;
}


/**
 * 全局页面初始化后执行函数
 */
$(function() {
	//点击多选框文字选中多选框
	$(".check_title").click(function(){
		if ($(this).prev().is(":checked")) {
	    	$(this).prev().prop("checked",false);
		} else {
	    	$(this).prev().prop("checked", true);
	    }
		
		checkBox();
	})
})
